﻿#ifndef __NETDISC_H__
#define __NETDISC_H__
#include <string>
#include <QCoreApplication>
#include <QtNetwork/QNetworkAccessManager>
#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>

class Netdisc {
public:
	Netdisc();

	// 发送get请求
	QString get(const QString& url);
	// 发送post请求
	QString post(const QString& url, const QString& content);
	// 发送put请求
	QString put(const QString& url, const QString& content);

	// token相关
	void readToken();
	void saveToken();
	void updateToken();
	// 解析刷新AccessToken回报
	bool parseRefreshAccessTokenRsp(QString content);
	// 构建refreshAccessToken
	std::string constructRefreshAccessToken(std::string refreshToken);
	QString getRefreshToken();

	// 上传文件
	bool uploadFile(const QString& fileName, const QByteArray& content);
	// 预创建
	bool uploadFilePrecreate(const QString& fileName, const QByteArray& content);
	// 分片上传
	bool uploadFileSuperFile(const QString& fileName, const QByteArray& content);
	// 创建文件
	bool uploadFileCreate(const QString& fileName, const QByteArray& content);

private:
	std::shared_ptr<QNetworkAccessManager> httpMgr;
	QEventLoop eventLoop;

	QString refreshToken;
	QString accessToken;

	QString uploadId;
	QString md5sum;
};

#endif